স্প্রিং ক্লাউড টাস্ক (Spring Cloud Task) হলো স্প্রিং ক্লাউড ইকোসিস্টেমের একটি উপাদান, যা ছোট এবং স্বল্পস্থায়ী (short-lived) মাইক্রোসার্ভিস অ্যাপ্লিকেশন বা টাস্ক তৈরি এবং পরিচালনার জন্য ব্যবহৃত হয়। এটি সাধারণত এমন কাজের জন্য ব্যবহৃত হয় যেগুলো একবার চালানো হয় এবং একটি নির্দিষ্ট সময়ে সম্পন্ন হয়, যেমন ব্যাচ প্রসেসিং বা ডেটা মাইগ্রেশন।
স্প্রিং ক্লাউড টাস্ক মাইক্রোসার্ভিস কোরিওগ্রাফি (Microservices Choreography) সমর্থন করে, যেখানে বিভিন্ন মাইক্রোসার্ভিস স্বাধীনভাবে কাজ করে এবং নিজেদের মধ্যে ঘটনার (event) মাধ্যমে যোগাযোগ করে। এটি মাইক্রোসার্ভিস কমিউনিকেশনের একটি বিকেন্দ্রীকৃত (decentralized) পদ্ধতি।
স্প্রিং ক্লাউড টাস্ক স্বল্পস্থায়ী প্রক্রিয়ার জন্য ডিজাইন করা হয়েছে, যা একবার শুরু হয়ে একটি নির্দিষ্ট সময়ে শেষ হয়। এটি দীর্ঘস্থায়ী সার্ভিসের মতো স্থায়ীভাবে চালু থাকে না।
টাস্ক সম্পন্ন হওয়ার পর স্বয়ংক্রিয়ভাবে লজিক এক্সিকিউশন শেষ করে এবং অপ্রয়োজনীয় রিসোর্স ক্লিনআপ করে।
স্প্রিং ক্লাউড টাস্ক অন্যান্য মাইক্রোসার্ভিসের সাথে ইভেন্টের মাধ্যমে যোগাযোগ করতে পারে। এটি স্প্রিং ক্লাউড স্ট্রিম (Spring Cloud Stream) বা মেসেজ ব্রোকারের মাধ্যমে কাজ করে।
স্প্রিং ক্লাউড টাস্ক এক্সিকিউটেড টাস্কগুলোর ফলাফল এবং মেটাডেটা সেন্ট্রালাইজড ডেটাবেসে সংরক্ষণ করে, যা মনিটরিং এবং বিশ্লেষণের জন্য ব্যবহৃত হয়।
মাইক্রোসার্ভিস কোরিওগ্রাফি হলো এমন একটি পদ্ধতি যেখানে প্রতিটি মাইক্রোসার্ভিস স্বাধীনভাবে কাজ করে এবং ইভেন্টের মাধ্যমে নিজেদের মধ্যে সমন্বয় সাধন করে। এতে কোনো কেন্দ্রীয় নিয়ন্ত্রণ (central orchestrator) থাকে না।
স্প্রিং ক্লাউড টাস্ক কোরিওগ্রাফির জন্য স্প্রিং ক্লাউড স্ট্রিম ব্যবহার করে। এটি Apache Kafka, RabbitMQ, বা অন্যান্য মেসেজ ব্রোকারের মাধ্যমে ইভেন্ট পাঠানো এবং গ্রহণ করা সম্ভব করে।
স্প্রিং ক্লাউডে টাস্ক (Task) হলো একটি স্বল্পস্থায়ী, এককালীন এক্সিকিউশন ভিত্তিক প্রক্রিয়া যা সাধারণত নির্দিষ্ট একটি কাজ সম্পন্ন করার জন্য ব্যবহৃত হয়। এটি সাধারণত ব্যাকগ্রাউন্ড প্রসেস বা ক্রন জবের মতো কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়, যেখানে কাজটি সম্পূর্ণ হওয়ার পর প্রসেস বন্ধ হয়ে যায়।
স্প্রিং ক্লাউড টাস্ক Spring Cloud Task
মডিউলের মাধ্যমে পরিচালিত হয়। এটি সহজেই স্প্রিং বুট অ্যাপ্লিকেশনের সাথে একীভূত করা যায় এবং টাস্কের এক্সিকিউশন ট্র্যাক করে।
টাস্ক এমন কাজের জন্য ব্যবহৃত হয়, যা নির্দিষ্ট সময়ের মধ্যে সম্পন্ন হতে পারে এবং বারবার চালানোর প্রয়োজন নেই। উদাহরণস্বরূপ, ডাটাবেস মাইগ্রেশন বা ব্যাচ প্রসেসিং।
স্প্রিং ক্লাউড টাস্ক একটি টাস্কের শুরু, শেষ এবং ফলাফল ট্র্যাক করে, যা ডিবাগিং এবং মনিটরিং সহজ করে তোলে।
স্প্রিং ক্লাউড টাস্ক স্প্রিং ব্যাচ (Spring Batch) এর সাথে একীভূত হয়ে বড় আকারের ডেটা প্রসেসিংয়ের কাজ সম্পন্ন করতে পারে।
স্প্রিং ক্লাউড টাস্ক সহজে স্প্রিং ফ্রেমওয়ার্কের অন্যান্য মডিউলের সাথে ইন্টিগ্রেট করা যায়, যেমন স্প্রিং বুট, স্প্রিং ক্লাউড ডাটা ফ্লো।
স্প্রিং বুটের মতো, স্প্রিং ক্লাউড টাস্ক স্বয়ংক্রিয় কনফিগারেশন সমর্থন করে। ফলে ডেভেলপারদের ম্যানুয়ালি জটিল কনফিগারেশন করতে হয় না।
টাস্কের এক্সিকিউশন ডেটা ডাটাবেসে সংরক্ষণ করা হয়, যেমন শুরু এবং শেষ সময়, টাস্কের আইডি এবং ফলাফল।
যদি কোনো টাস্ক ব্যর্থ হয়, তাহলে সেটি পুনরায় চালানোর সুবিধা প্রদান করে।
বড় ডেটাবেজ থেকে ডেটা এক্সট্রাক্ট করা এবং অন্য কোনো সার্ভারে আপলোড করা।
ব্যবহারকারীদের একটি নির্দিষ্ট সময় পরে স্বয়ংক্রিয় ইমেইল পাঠানোর কাজ।
এক ফরম্যাট থেকে অন্য ফরম্যাটে ফাইল রূপান্তর।
১. স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করা
একটি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে @EnableTask
অ্যানোটেশন যোগ করতে হয়।
২. কাজের লজিক প্রদান করা
টাস্কের নির্দিষ্ট কাজের লজিক CommandLineRunner
বা ApplicationRunner
ইন্টারফেসের মাধ্যমে সংজ্ঞায়িত করা হয়।
৩. টাস্ক এক্সিকিউট করা
অ্যাপ্লিকেশন চালু করলে টাস্কের কাজ সম্পন্ন হয় এবং তারপর অ্যাপ্লিকেশন বন্ধ হয়ে যায়।
@SpringBootApplication
@EnableTask
public class MyTaskApplication {
public static void main(String[] args) {
SpringApplication.run(MyTaskApplication.class, args);
}
@Bean
public CommandLineRunner taskRunner() {
return args -> {
System.out.println("Executing Task...");
// আপনার নির্দিষ্ট লজিক এখানে লিখুন।
};
}
}
স্প্রিং ক্লাউড টাস্ক ছোট ও স্বল্পস্থায়ী কাজের জন্য আদর্শ, যা একবার চালিয়ে কাজ সম্পন্ন করা যায়। এটি নির্দিষ্ট কাজের লজিক পরিচালনা, এক্সিকিউশন লগিং এবং ব্যাচ প্রসেসিংয়ের সুবিধা প্রদান করে। মাইক্রোসার্ভিস আর্কিটেকচারের মধ্যে স্বয়ংক্রিয় টাস্ক ব্যবস্থাপনার জন্য এটি একটি সহজ এবং কার্যকর সমাধান।
Spring Cloud Task একটি ফ্রেমওয়ার্ক যা Short-lived Microservices বা কম সময়ের জন্য কার্যকরী মাইক্রোসার্ভিস তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত এমন কাজের জন্য ব্যবহৃত হয় যা নির্দিষ্ট একটি কাজ সম্পন্ন করে শেষ হয়ে যায়, যেমন ডেটা প্রসেসিং, ব্যাচ প্রসেসিং, বা কোনো নির্দিষ্ট অপারেশন। Spring Cloud Task মূলত Spring Boot এর সুবিধা ব্যবহার করে ছোট, কার্যকর, এবং সহজে ব্যবস্থাপিত মাইক্রোসার্ভিস তৈরি করতে সাহায্য করে।
Spring Cloud Task সাধারণত নিচের কাজগুলোর জন্য ব্যবহৃত হয়:
Spring Cloud Task প্রজেক্ট সেটআপ করতে নিচের ধাপগুলো অনুসরণ করুন:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
</dependency>
Spring Boot অ্যাপ্লিকেশন ক্লাসে @EnableTask
অ্যানোটেশন ব্যবহার করতে হবে।
@SpringBootApplication
@EnableTask
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
একটি CommandLineRunner
বা ApplicationRunner
ইমপ্লিমেন্ট করে টাস্কের কার্যক্রম নির্ধারণ করা হয়।
@Component
public class MyTask implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Short-lived task is executing...");
// আপনার লজিক এখানে লিখুন
}
}
Spring Cloud Task সহজেই Spring Batch এর সাথে কাজ করতে পারে। একটি Spring Batch কাজ সম্পন্ন করার পরে টাস্ক স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
@Bean
public Job job(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
return jobBuilderFactory.get("job")
.start(stepBuilderFactory.get("step")
.tasklet((contribution, chunkContext) -> {
System.out.println("Executing Spring Batch task...");
return RepeatStatus.FINISHED;
}).build())
.build();
}
Spring Cloud Task অ্যাপ্লিকেশনগুলি সাধারণত Kubernetes বা Docker এর মাধ্যমে ডিপ্লয় করা হয়। এটি সহজে স্কেল করা যায় এবং ক্লাউড প্ল্যাটফর্মে কার্যকরভাবে পরিচালনা করা যায়।
Spring Cloud Task ব্যবহার করে একটি ডেটা মাইগ্রেশন টাস্ক তৈরি করা যায়, যেখানে ডাটাবেস থেকে ফাইল সিস্টেমে ডেটা স্থানান্তর করা হয়।
ব্যাচ প্রসেসিংয়ের কাজ সম্পন্ন করতে Spring Cloud Task ব্যবহার করা যায়, যেমন বড় ডেটাসেট থেকে প্রক্রিয়াকৃত ডেটা এক্সট্র্যাক্ট করা।
Spring Cloud Task এর মাধ্যমে Short-lived Microservices তৈরি করা সহজ এবং কার্যকর। এটি মাইক্রোসার্ভিস আর্কিটেকচারে নির্দিষ্ট কাজের জন্য একটি নির্ভরযোগ্য সমাধান প্রদান করে।
স্প্রিং ক্লাউড এবং স্প্রিং ব্যাচ একত্রে মাইক্রোসার্ভিস ভিত্তিক ব্যাচ প্রসেসিং (Batch Processing) এবং টাস্ক ম্যানেজমেন্টকে সহজতর করে। স্প্রিং ক্লাউড টাস্ক (Spring Cloud Task) ব্যবহার করে স্প্রিং ব্যাচ জব (Spring Batch Job) তৈরি এবং পরিচালনা করা যায়। এটি ছোট বা এককালীন টাস্ক (Short-lived or One-off Tasks) কার্যকর করার জন্য একটি কার্যকর সমাধান।
স্প্রিং ক্লাউড টাস্ক হল একটি মাইক্রোসার্ভিস ভিত্তিক টুল যা স্বল্পমেয়াদী প্রসেসগুলো সম্পন্ন করতে ব্যবহৃত হয়। এটি সাধারণত স্প্রিং ব্যাচের সাথে ইন্টিগ্রেট করে ব্যাচ প্রসেসিংকে আরও কার্যকর করে।
স্প্রিং ক্লাউড টাস্ক এমন অ্যাপ্লিকেশন তৈরিতে ব্যবহৃত হয় যা একটি নির্দিষ্ট কাজ সম্পন্ন করে এবং এরপর বন্ধ হয়ে যায়।
স্প্রিং ক্লাউড টাস্ক স্প্রিং ব্যাচের সাথে ইন্টিগ্রেট হয়ে জব পরিচালনা সহজতর করে।
প্রতিটি টাস্কের স্ট্যাটাস এবং লগ ডাটা সংরক্ষণ করে, যা ডিবাগিং এবং মনিটরিংয়ের জন্য সহায়ক।
প্রকল্পে স্প্রিং ক্লাউড টাস্ক এবং স্প্রিং ব্যাচের জন্য প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করতে হবে।
Maven উদাহরণ:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
</dependency>
স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করতে হবে যা @EnableTask
এনোটেশন ব্যবহার করবে।
@EnableTask
@SpringBootApplication
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
স্প্রিং ব্যাচ জব তৈরি করতে Job
এবং Step
সংজ্ঞায়িত করতে হবে।
@Bean
public Job sampleJob(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
return jobBuilderFactory.get("sampleJob")
.start(sampleStep(stepBuilderFactory))
.build();
}
@Bean
public Step sampleStep(StepBuilderFactory stepBuilderFactory) {
return stepBuilderFactory.get("sampleStep")
.tasklet((contribution, chunkContext) -> {
System.out.println("Executing Batch Job...");
return RepeatStatus.FINISHED;
}).build();
}
application.properties
ফাইলে টাস্ক এবং ব্যাচ সম্পর্কিত সেটআপ যুক্ত করতে হবে।
spring.cloud.task.name=sampleTask
spring.batch.job.enabled=true
স্প্রিং ক্লাউড টাস্ক এবং স্প্রিং ব্যাচ কার্যকর করতে ডেটাবেসে স্ট্যাটাস এবং মেটাডেটা সংরক্ষণ করা হয়। প্রয়োজনীয় ডেটাবেস স্ক্রিপ্ট রান করতে হবে।
স্প্রিং ক্লাউড এবং স্প্রিং ব্যাচের ইন্টিগ্রেশন ডেভেলপারদের জন্য একটি শক্তিশালী টুলসেট সরবরাহ করে, যা মাইক্রোসার্ভিস ভিত্তিক ব্যাচ প্রসেসিং এবং টাস্ক ম্যানেজমেন্ট সহজতর করে। এটি স্বল্পমেয়াদী টাস্ক পরিচালনা এবং ব্যাচ জব সংহত করার মাধ্যমে কার্যক্ষমতা বৃদ্ধি করে।
স্প্রিং ক্লাউড টাস্ক (Spring Cloud Task) হলো এক-বার চলমান (short-lived) মাইক্রোসার্ভিস বা জব (Job) তৈরি করার জন্য একটি ফ্রেমওয়ার্ক। এটি স্প্রিং বুটের (Spring Boot) উপর ভিত্তি করে তৈরি এবং ডেটা প্রসেসিং, ব্যাচ প্রসেসিং, বা যেকোনো সাময়িক টাস্ক সম্পাদনের জন্য উপযুক্ত।
স্প্রিং ইনিশিয়ালাইজার (Spring Initializr) থেকে একটি স্প্রিং বুট প্রজেক্ট তৈরি করুন। প্রয়োজনীয় ডিপেন্ডেন্সি যুক্ত করুন:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
</dependency>
@EnableTask
অ্যানোটেশন ব্যবহার করে একটি স্প্রিং ক্লাউড টাস্ক তৈরি করুন:
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.task.configuration.EnableTask;
@SpringBootApplication
@EnableTask
public class SpringCloudTaskApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(SpringCloudTaskApplication.class, args);
}
@Override
public void run(String... args) {
System.out.println("Spring Cloud Task is running!");
System.out.println("Arguments: ");
for (String arg : args) {
System.out.println(arg);
}
}
}
application.properties
ফাইলে স্প্রিং ক্লাউড টাস্কের জন্য প্রাথমিক কনফিগারেশন যোগ করুন:
spring.application.name=spring-cloud-task-example
spring.cloud.task.closecontext.enabled=true
ম্যাভেন বা গ্র্যাডল ব্যবহার করে অ্যাপ্লিকেশন চালান:
mvn spring-boot:run -Dspring-boot.run.arguments="arg1 arg2"
আউটপুটে আপনি নিম্নলিখিত দেখতে পাবেন:
Spring Cloud Task is running!
Arguments:
arg1
arg2
স্প্রিং ক্লাউড টাস্ক একটি সংক্ষিপ্ত এবং কার্যকর উপায় প্রদানের মাধ্যমে ডেভেলপারদের মাইক্রোসার্ভিস জব সহজে সম্পন্ন করতে সাহায্য করে। এটি স্প্রিং ক্লাউড ডেটা ফ্লো-এর মাধ্যমে বৃহৎ স্কেল অ্যাপ্লিকেশন পরিচালনার একটি শক্তিশালী উপাদান।
Read more